<?php
declare (strict_types = 1);

namespace app\admin\controller;

use app\BaseController;
use think\facade\Db;
use think\facade\View;

class TencentAds extends BaseController
{
    /**
     * 显示配置页面
     */
    public function config()
    {
        // 获取配置信息
        $config = Db::name('tencent_ads_config')->order('id', 'desc')->find();
        View::assign('config', $config ?: []);
        return View::fetch();
    }

    /**
     * 保存配置
     */
    public function save()
    {
        if (!$this->request->isPost()) {
            return json(['code' => 0, 'msg' => '非法请求']);
        }

        $config = $this->request->post('config/a');
        if (empty($config)) {
            return json(['code' => 0, 'msg' => '配置信息不能为空']);
        }

        try {
            // 获取最新配置记录
            $existConfig = Db::name('tencent_ads_config')->order('id', 'desc')->find();
            
            // 添加时间字段
            $config['update_time'] = time();
            
            if ($existConfig) {
                // 更新配置
                $result = Db::name('tencent_ads_config')->where('id', $existConfig['id'])->update($config);
            } else {
                // 新增配置
                $config['create_time'] = time();
                $result = Db::name('tencent_ads_config')->insert($config);
            }

            if ($result !== false) {
                return json(['code' => 1, 'msg' => '配置保存成功']);
            }
            return json(['code' => 0, 'msg' => '配置保存失败']);
        } catch (\Exception $e) {
            return json(['code' => 0, 'msg' => '配置保存失败：' . $e->getMessage()]);
        }
    }

    /**
     * 更新环境变量
     * @param string $content 环境变量文件内容
     * @param string $key 键名
     * @param string $value 值
     * @return string
     */
    private function updateEnvVariable($content, $key, $value)
    {
        if (preg_match("/^{$key}=.*/m", $content)) {
            $content = preg_replace("/^{$key}=.*/m", "{$key}={$value}", $content);
        } else {
            $content .= "\n{$key}={$value}";
        }
        return $content;
    }
}